package czy.demo.repository;

import czy.demo.pojo.Person;
import org.springframework.data.domain.Example;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import javax.persistence.NamedQuery;
import java.util.Date;
import java.util.List;
import java.util.Optional;

@Repository
public interface PersonRepository extends JpaRepository<Person,Integer> {

    /* JPA支持通过方法名自定义查询，方法名中必须包含指定关键字与属性名 */

    /* 由于findById在CrudRepository中已定义，此处返回类型1必须为Optional */
    Optional<Person> findById(Integer id);

    /* get与find作用相同 */
    Person getById(Integer id);

    /* query与find作用相同 */
    Person queryById(Integer id);

    /* 只有findAll，没有getAll、queryAll，当没有条件时使用 */
    List<Person> findAll();

    /* And关键字对应and条件 */
    Person findByIdAndName(Integer id,String name);

    /* Or关键字对应or条件 */
    Person findByIdOrName(Integer id,String name);

    /* Before对应小于条件，意思是在指定日期之前 */
    List<Person> findByBirthdayBefore(Date end);

    /* After对应大于条件，意思是在指定日期之后 */
    List<Person> findByBirthdayAfter(Date start);

    /* Between对应betweeb ? and ?条件 */
    List<Person> findByBirthdayBetween(Date start,Date end);

    List<Person> findByBirthdayIsBefore(Date end);

    List<Person> findByBirthdayIsAfter(Date start);

    List<Person> findByBirthdayIsBetween(Date start,Date end);
}
